export { };
// 1. 请补全JavaScript代码，该函数接收两个参数分别为旧版本、新版本，当新版本高于旧版本时表明需要更新，返回true，否则返回false。
// 注意：
// 1. 版本号格式均为"X.X.X"
// 2. X∈[0,9]
// 3. 当两个版本号相同时，不需要更新



const _shouldUpdate = (oldVersion: string, newVersion: string) => {
	const oldArr = oldVersion.split('.')
	const newArr = newVersion.split('.')

	// true   =>  需要更新  => 存在至少有一项新版本 > 老版本

	// false  =>  不需要更新 => 版本一致

	// if (oldArr[0] === newArr[0] && oldArr[1] === newArr[1] && oldArr[2] === newArr[2]) {
	// 	return false
	// } else {
	// 	return true
	// }

	return !oldArr.every((v, i) => {
		return v === newArr[i]
	})

}

const s1 = _shouldUpdate('1.1.1', '1.1.2')

const s2 = _shouldUpdate('2.1.0', '2.2.1')

const s3 = _shouldUpdate('10.0.1', '11.1.1')
const s4 = _shouldUpdate('5.5.5', '5.5.5')

// console.log(s1, s2, s3, s4)

// 2. 找到数组中， 重复的元素
// [1, 2, 4, 4, 3, 3, 6, 6, 5]
//  0  1  2  3  4  5  6  7  8

// => [4, 3, 6]

const findRepeatArr = (arr: number[]): number[] => {
	return arr.filter(v => {
		return arr.indexOf(v) !== arr.lastIndexOf(v)
	})
}

const s5 = findRepeatArr([1, 2, 4, 4, 3, 3, 6, 6, 5])

// console.log(s5)

// 3. 实现栈结构
// 栈结构 ： 后进先出， 先进后出

class Stack {
	state: string[] = [];

	push(value: string) {
		return this.state.push(value)
	}

	pop() {
		return this.state.pop()
	}

	getValueByIndex(i: number) {
		// 后进先出， 先进后出
		let num = this.state.length - i;
		const arr: string[] = [];

		// 去除栈后面的数据
		while(num > 1) {
			arr.push(this.state.pop() as string)
			num--
		}
		// 获取指定的数据
		const value = this.state.pop();
		
		// 再次入栈
		while(arr.length > 0) {
			this.state.push(arr.pop() as string)
		}

		return value
	}
}


const s = new Stack();
s.push('a')
s.push('b')
s.push('c')
s.push('d')
s.push('e')

const ss = s.getValueByIndex(1)
console.log(ss)
console.log(s)



// 4. axios 二次封装

